package twentyThreePattern.zMixed.observer_mediator.step2;

import java.util.Observable;

public class ProductEvent extends Observable {

	// 事件起源
	private Product source;
	// 事件的类型
	private ProductEventTypeEnum type;

	// 传入事件的源头,默认为新建类型
	public ProductEvent(Product p) {
		this(p, ProductEventTypeEnum.NEW_PRODUCT);
	}

	// 事件源头以及事件类型
	public ProductEvent(Product p, ProductEventTypeEnum _type) {
		this.source = p;
		this.type = _type;
		// 事件触发
		notifyEventDispatch();
	}

	// 获得事件的始作俑者
	public Product getSource() {
		return source;
	}

	// 获得事件的类型
	public ProductEventTypeEnum getEventType() {
		return this.type;
	}

	private void notifyEventDispatch() {
		super.addObserver(EventDispatch.getEventDispathc());
		super.setChanged();
		super.notifyObservers();

	}

}
